package xin.pdf;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * <pre>
 * 注释测试
 * iText支持不同风格的注释
 * 文本注释：
 * 你可以添加一小段文本到你的文档中，但它并非文档内容的一部分，注释有标题和内容
 *
 * 外部链接注释：
 * 你需要指定一个可点击的矩形和一个字符串（URL描述）或URL对象
 *
 * 外部PDF文件链接注释：
 * 你需要指定一个可点击的矩形和一个字符串（文件名称）和目的文件或页码
 *
 *
 * 指定行为链接注释
 * 你需要指定一个可点击的矩形和一个指定的行为
 *
 * 应用程序链接注释：
 * 你需要指定一个可点击的矩形和一个应用程序
 *
 * 无须在页面上指定一个位置，iText会内部处理。
 * 你能够看到iText添加文本注释在页面上当前位置下面，第一个在段后第一行下面，第二个在短句结束处的下面。
 * 所有其他注释需要指定想匹配的矩形区域
 * </pre>
 *
 * @author lixin_ma@outlook.com
 * @version 1.0
 * @since 2019/3/28
 */
public class AnnotationTest {

    public static void main(String[] args) throws IOException, DocumentException {
        Rectangle rectangle = new Rectangle(PageSize.A4);
        rectangle.setBackgroundColor(BaseColor.WHITE);
        Document document = new Document(rectangle);
        FileOutputStream fos = new FileOutputStream(new File("E:\\test\\pdf\\annotation.pdf"));
        PdfWriter writer = PdfWriter.getInstance(document,fos);
        writer.setPdfVersion(PdfWriter.PDF_VERSION_1_2);
        document.open();
        document.newPage();

        document.add(new Paragraph("文本注释------------",PdfFont.TH_FONT));
        Paragraph paragraph1 = new Paragraph();
        Phrase phrase1 = new Phrase();
        Annotation textAnnotation = new Annotation(
                "文本注释",
                "文本注释文本注释文本注释文本注释文本注释");
        phrase1.add(textAnnotation);
        paragraph1.add(phrase1);
        document.add(paragraph1);

//        document.add(new Paragraph("外部链接注释------------\r\n",PdfFont.TH_FONT));
//        Annotation outAnnotation = new Annotation(300f, 700f, 400f, 800f, new URL("https://www.spuermali.xin"));
//        document.add(outAnnotation);
//
//        document.add(new Paragraph("外部PDF文件链接注释------------\r\n",PdfFont.TH_FONT));
//        Annotation outPdfAnnotation = new Annotation(300f, 700f, 400f, 800f, "E:\\test\\pdf\\list.pdf", "列表测试文件");
//        document.add(outPdfAnnotation);
//
//        document.add(new Paragraph("指定行为链接注释------------\r\n",PdfFont.TH_FONT));
//        Annotation actionAnnotation = new Annotation(300f, 700f, 200f, 800f, PdfAction.LASTPAGE);
//        document.add(actionAnnotation);

//        document.add(new Paragraph("应用程序链接注释------------\r\n",PdfFont.TH_FONT));
//        Annotation appAnnotation = new Annotation(300f, 700f, 400f, 800f, "C:\\tools\\Typora\\Typora.exe", null, null, null);
//        document.add(appAnnotation);

        document.newPage();
        document.add(new Paragraph("泊秦淮\n" +
                "唐代：杜牧\n" +
                "\n" +
                "烟笼寒水月笼沙，夜泊秦淮近酒家。\n" +
                "商女不知亡国恨，隔江犹唱《后庭花》\n\n" +
                "译文\n" +
                "浩渺寒江之上弥漫着迷蒙的烟雾，皓月的清辉洒在白色沙渚之上。入夜，我将小舟泊在秦淮河畔，临近酒家。金陵歌女似乎不知何为亡国之恨黍离之悲，竟依然在对岸吟唱着淫靡之曲《玉树后庭花》。\n" +
                "\n" +
                "英译\n" +
                "Mist veils the cold stream, and moonlight the sand, as I moor in the shadow of a river-tavern,\n" +
                "Where girls, with no thought of a perished Kingdom, gaily echo a song of courtyard flowers.\n" +
                "\n" +
                "注释\n" +
                "选自冯集梧《樊川文集》卷四。（上海古籍出版社1978年版）。秦淮，即秦淮河，发源于江苏句容大茅山与溧（lì）水东庐山两山间，经南京流入长江。相传为秦始皇南巡会稽时开凿的，用来疏通淮水，故称秦淮河。\n" +
                "泊：停泊。\n" +
                "商女：以卖唱为生的歌女。\n" +
                "后庭花：歌曲《玉树后庭花》的简称。南朝陈皇帝陈叔宝（即陈后主）溺于声色，作此曲与后宫美女寻欢作乐，终致亡国，所以后世称此曲为“亡国之音”",PdfFont.CONTEXT_FONT));
        document.close();
        fos.close();
    }
}
